[ DOCUMENTATION ]
Memory Crystal Docs
Current product and integration reference for the Memory Crystal plugin, hosted API, and MCP server.
Release Notes
Latest plugin release: v0.6.1 (March 27, 2026).
- Dynamic per-session channelScope override — agents can now switch channel scope at session start without changing plugin config
- Per-call channel parameter on all MCP tools — pass channel on individual tool calls for fine-grained memory isolation
- peekRateLimit utility and /api/mcp/rate-limit-check endpoint — check remaining rate limit budget before making calls
Full history lives on /releases.
Getting Started
- Install the OpenClaw plugin with the hosted installer.
- Approve the browser device-auth flow or pass an existing API key.
- Let the installer wire the plugin and restart OpenClaw.
- Use the same account with the hosted MCP endpoint or local MCP server if you need tool access outside OpenClaw.
curl -fsSL https://memorycrystal.ai/crystal | bashUpdate an existing OpenClaw install:
curl -fsSL https://memorycrystal.ai/crystal/update | bashHosted MCP endpoint:
https://api.memorycrystal.ai/mcpRun the local MCP server from this repo:
cd mcp-server && npm run startMemory Architecture
Memory Crystal currently runs as a two-layer memory system: short-term message storage for live conversation continuity and long-term durable memories for recall across sessions, tools, and machines.
- Capture: user and assistant turns are logged to short-term memory, then distilled into long-term memories.
- Compaction: the OpenClaw plugin owns compaction and can replace older raw turns with local summaries.
- Snapshots: compaction and trace flows persist source conversation snapshots so summaries stay auditable.
- Prompt-aware local summary injection: local summaries are searched for relevance and injected when enabled by plugin config.
- Knowledge graph: graph enrichment and graph-query tools add ownership, dependency, and connection context.
- Reflection + consolidation: background jobs promote low-salience sensory memories, distill decisions/lessons, and keep long-term memory usable as volume grows.
Stores: sensory, episodic, semantic, procedural, prospective. Categories: decision, lesson, person, rule, event, fact, goal, workflow, conversation.
Tool Reference
These are the current crystal_* tools exposed by the repo today. The OpenClaw plugin also registers legacy compatibility tools memory_search and memory_get, but they are not listed here because they are not crystal_* tools.
Shared Memory Tools
Graph Query Tools
OpenClaw Local Session Tools
OpenClaw Integration
The current plugin entry point is plugin/index.js, with openclaw.plugin.json as the active manifest. Legacy compatibility files handler.js and openclaw-hook.json remain in the install payload for older environments.
- Recall layer: before-agent-start and before-tool-call hooks surface wake briefings, recall results, and preflight warnings.
- Capture layer: message-received, llm-output, and fallback hooks persist turns, trigger memory extraction, and write media assets.
- Context engine: the plugin owns compaction, local summaries, and relevance-based summary injection.
- REST transport: plugin calls currently go through /api/mcp/* endpoints, while the standalone MCP server exposes the shared tool set for external clients.
Pricing & Limits
- Pro and Ultra start with a 7-day free trial in the current pricing flow.
- Starter is a legacy alias that maps to Pro limits in code.
- Enterprise is handled as custom pricing and custom limits.
FAQ
Do I need OpenClaw to use Memory Crystal?
No. OpenClaw is the deepest integration, but the hosted endpoint and local MCP server expose the tool surface to other MCP clients.
What shipped in the latest plugin version?
v0.6.1 added the current lossless-memory work, including traceable snapshots and prompt-aware local summary injection.
How do I recover the source of a memory?
Use crystal_trace. It follows a saved memory back to the source conversation snapshot when one exists.
How are limits enforced?
Long-term memory counts, short-term message counts, channel counts, and short-term retention are all derived from shared/tierLimits.ts.